package com.interview.proxy;

import java.lang.reflect.Proxy;

/**
 * 生成的代理类是在内存中存在的，没有源代码，直接根据规范生成字节码；
 * ClassLoader 功能就是把生成的代理类加载到JVM控制的内存
 * Interfaces  接口数组，生成的代理类要实现的接口
 * h: InvocationHandler 调用处理器，代理对象执行方法的时候，统一通过调用处理器转发到真实对象；
 * 客户： 学生
 * 李宁专卖店: 卖鞋，鞋厂的代理
 * 鞋厂： 负责真正生成鞋子
 *
 */
public class TestMybatis02 {
    public static void main(String[] args) {

        System.getProperties().put("sun.misc.ProxyGenerator.saveGeneratedFiles", "true");
        OrderService orderService = (OrderService) Proxy.newProxyInstance(
                OrderServiceImpl.class.getClassLoader(),
                OrderServiceImpl.class.getInterfaces(),
                new JdkMapperProxy(new OrderServiceImpl()));
        orderService.add();
    }
}